package Risk.Reseau;

import Risk.Moteur.*;

/**
 * Classe formatant les donnees de jeu selon le modele xml demande
 * et permettant ainsi l'envoie au serveur
 * @version 1.0
 * @date 29/12/2007
 * @author Sebastien Depoix
 */
public class TraitementClient {
    
    /**
     * Compteur s'incrementant a chaque envoi au serveur
     */
    private static int intCompteur = 0;
    
    /**
     * Objet permettant la connexion
     */
    private Client client;
   
    /**
     * Constructeur :  
     *  cree la connexion en utilisant la classe Client,
     *  envoie la premiere instruction au serveur.
     * 
     * @param hote Adresse du serveur
     * @param port Numero de port du serveur
     */
    public TraitementClient(String hote, int port){
        client = new Client(hote, port);
        debutDeJeu();
    }
    
    /**
     * Envoie au serveur de la balise de debut de jeu
     */
    public void debutDeJeu(){
        client.envoyerAuServeur("<global>");
    }
    
    /**
     * Envoie au serveur de la balise de fin de jeu
     */
    public void finDePartie(){
        client.envoyerAuServeur("</global>");
    }
    
    /**
     * Envoie au serveur de l'etat initial d'un joueur
     * @param joueur Un joueur dont on doit envoyer les informations initiales
     */
    public void envoieInitialisationJoueur(Joueur joueur){
        intCompteur++;
        String aEnvoyer = "<joueur><selecteur>"+joueur.getNom()+"</selecteur><nbTerritoires>0</nbTerritoires><mvt>"+intCompteur+"</mvt></joueur>";
        client.envoyerAuServeur(aEnvoyer);
    }
    
    /**
     * Envoie au serveur de l'etat du pays passe en parametre
     * @param pays Le pays qui a ete modifie
     */
    public void envoieInformationsPays(Pays pays){
        intCompteur++;
        String aEnvoyer = "<territoire><selecteur>"+pays.getNom()+"</selecteur><joueur>"+pays.getJoueur().getNom()+"</joueur><force>"+pays.getNbArmee()+"</force><mvt>"+intCompteur+"</mvt></territoire>";
        client.envoyerAuServeur(aEnvoyer);
    }

}
